﻿using System;
using System.Collections.Generic;
using Ornament.Domain;
using Ornament.MemberShip;

namespace Ornament.Messages.Dao
{
    public interface IInfoDao : IDao<Info, Guid>
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="cacasde"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        IList<Info> Find(string typeName, int pageIndex, int pageSize, bool cacasde, InfoState state);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="typeId"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="cacasde"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        IList<Info> Find(Guid typeId, int pageIndex, int pageSize, bool cacasde, InfoState state);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="state"></param>
        /// <param name="cacasde"></param>
        /// <param name="createQuery"></param>
        /// <returns></returns>
        IList<Info> Find(string typeName, DateTime startTime, DateTime endTime, InfoState state, bool cacasde, object createQuery);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="user"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <param name="typeName"></param>
        /// <returns></returns>
        IList<Info> Find(User user, int pageSize, int pageIndex, params string[] typeName);

        IList<Info> Find(InfoSearcher search);




    }
}